package cn.iocoder.yudao.module.infra.repository.mybatis.dao.config;

import cn.iocoder.yudao.common.pojo.PageResult;
import cn.iocoder.yudao.core.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.core.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.infra.repository.mybatis.domain.config.Config;
import cn.iocoder.yudao.module.infra.vo.config.ConfigExportReqVO;
import cn.iocoder.yudao.module.infra.vo.config.ConfigPageReqVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface ConfigMapper extends BaseMapperX<Config> {

    default Config selectByKey(String key) {
        return selectOne(Config::getConfigKey, key);
    }

    default PageResult<Config> selectPage(ConfigPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<Config>()
                .likeIfPresent(Config::getName, reqVO.getName())
                .likeIfPresent(Config::getConfigKey, reqVO.getKey())
                .eqIfPresent(Config::getType, reqVO.getType())
                .betweenIfPresent(Config::getCreateTime, reqVO.getCreateTime()));
    }

    default List<Config> selectList(ConfigExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<Config>()
                .likeIfPresent(Config::getName, reqVO.getName())
                .likeIfPresent(Config::getConfigKey, reqVO.getKey())
                .eqIfPresent(Config::getType, reqVO.getType())
                .betweenIfPresent(Config::getCreateTime, reqVO.getCreateTime()));
    }

}
